namespace Digitalmes.Domain.Entities.Mes.Qualities;

/// <summary>
/// 质量缺陷定义。
/// </summary>
/// <remarks>缺陷定义，也可用于返工管理。目前缺陷层级只定义二级。</remarks>
[SugarTable("qc_defect_define")]
public sealed class QcDefectDefine : AuditedEntity
{
    /// <summary>
    /// 缺陷代码，用于快速标记缺陷类型（如 "D001"、"D002"）。
    /// </summary>
    [NotNull]
    public string? DefectCode { get; set; }

    /// <summary>
    /// 缺陷名称（如 "尺寸超差"、"表面划伤"、"焊接虚焊"）。
    /// </summary>
    [NotNull]
    public string? DefectName { get; set; }

    /// <summary>
    /// 缺陷类型，如：Appearance->外观缺陷、Function->功能缺陷、Assembly->装配缺陷、Material->材料缺陷 等。
    /// </summary>
    /// <remarks>
    /// 外观缺陷: 主要影响产品的视觉效果和表面质量，如划痕、斑点、气泡、毛刺、污渍、色差等。
    /// 功能缺陷: 直接影响产品的使用性能或安全性，如尺寸超差、电气性能不良等。
    /// 装配缺陷: 指产品装配不符合设计要求的缺陷，如焊接虚焊、螺丝松动等。
    /// 尺寸缺陷：指产品尺寸不符合设计要求的缺陷，如尺寸超差、尺寸不全等。
    /// 材料缺陷: 指产品材料本身存在的缺陷，如气孔、夹杂物、质量不合格等。
    /// 工艺缺陷: 由于工艺控制不当引起的缺陷，如焊接问题、打磨不均等。
    /// </remarks>
    [NotNull]
    public string? DefectType { get; set; }

    /// <summary>
    /// 缺陷类型描述。
    /// </summary>
    public string? DefectTypeDesc { get; set; }

    /// <summary>
    /// 缺陷描述，对缺陷的详细说明，便于操作员或质检员理解。
    /// </summary>
    public string? DefectDesc { get; set; }

    /// <summary>
    /// 严重等级 (1-4)（如 "1-轻微"、"2-一般"、"3-严重"、"4-致命"）。
    /// </summary>
    public DefectLevelEnum DefectLevel { get; set; }

    /// <summary>
    /// 排序
    /// </summary>
    public int Order { get; set; }

    /// <summary>
    /// 启用状态（0->停用，1->启用）
    /// </summary>
    public EnabledStatusEnum Status { get; set; }
}
